The present invention relates to the field of providing an interface for applications to communicate over a bus structure. More particularly, the present invention relates to the field of controlling bus management and data transfer operations between applications over a bus structure in both asynchronous and isochronous formats.
The IEEE 1394-1995 standard, xe2x80x9c1394 Standard For A High Performance Serial Bus,xe2x80x9d is an international standard for implementing an inexpensive high-speed serial bus architecture which supports both asynchronous and isochronous format data transfers. Isochronous data transfers are real-time transfers which take place such that the time intervals between significant instances have the same duration at both the transmitting and receiving applications. Each packet of data transferred isochronously is transferred in its own time period. An example of an ideal application for the transfer of data isochronously would be from a video recorder to a television set. The video recorder records images and sounds and saves the data in discrete chunks or packets. The video recorder then transfers each packet, representing the image and sound recorded over a limited time period, during that time period, for display by the television set. The IEEE 1394 standard bus architecture provides multiple channels for isochronous data transfer between applications. A six bit channel number is broadcast with the data to ensure reception by the appropriate application. This allows multiple applications to simultaneously transmit isochronous data across the bus structure. Asynchronous transfers are traditional data transfer operations which take place as soon as possible and transfer an amount of data from a source to a destination.
The IEEE 1394 standard provides a high-speed serial bus for interconnecting digital devices thereby providing a universal I/O connection. The IEEE 1394 standard defines a digital interface for the applications thereby eliminating the need for an application to convert digital data to analog data before it is transmitted across the bus. Correspondingly, a receiving application will receive digital data from the bus, not analog data, and will therefore not be required to convert analog data to digital data. The cable required by the IEEE 1394 standard is very thin in size compared to other bulkier cables used to connect such devices. Devices can be added and removed from an IEEE 1394 bus while the bus is active. If a device is so added or removed the bus will then automatically reconfigure itself for transmitting data between the then existing nodes. A node is considered a logical entity with a unique address on the bus structure. Each node provides an identification ROM, a standardized set of control registers and its own address space.
The IEEE 1394 standard defines a protocol as illustrated in FIG. 1. This protocol includes a serial bus management block 10 coupled to a transaction layer 12, a link layer 14 and a physical layer 16. The physical layer 16 provides the electrical and mechanical connection between a device or application and the IEEE 1394 cable. The physical layer 16 also provides arbitration to ensure that all devices coupled to the IEEE 1394 bus have access to the bus as well as actual data transmission and reception. The link layer 14 provides data packet delivery service for both asynchronous and isochronous data packet transport. This supports both asynchronous data transport, using an acknowledgement protocol, and isochronous data transport, providing real-time guaranteed bandwidth protocol for just-in-time data delivery. The transaction layer 12 supports the commands necessary to complete asynchronous data transfers, including read, write and lock. The serial bus management block 10 contains an isochronous resource manager for managing isochronous data transfers. The serial bus management block 10 also provides overall configuration control of the serial bus in the form of optimizing arbitration timing, guarantee of adequate electrical power for all devices on the bus, assignment of the cycle master, assignment of isochronous channel and bandwidth resources and basic notification of errors.
An application programming interface (API) for applications using the IEEE 1394 standard serial bus has been developed by Skipstone for enabling the application to use the IEEE 1394 bus for data transfers. With their API, Skipstone includes a manual entitled xe2x80x9cThe SerialSoft IEEE 1394 Developer Toolkit,xe2x80x9d available from Skipstone, Inc., 3925 West Braker Lane, #425, Austin, Tex. 78759. Skipstone defines their API as a collection of programming calls to be used by the application to manage data being written to and obtained from a device over an IEEE 1394 bus. To initialize an isochronous transfer, several asynchronous data transfers may be required to configure the applications and to determine the specific channel which will be used for transmission of the data. Once the channel has been determined, buffers are used at the transmitting application to store the data before it is sent and at the receiving application to store the data before it is processed. In a transmitting application, the Skipstone API actively manages the transfer of data from the appropriate portion of the appropriate buffer onto the bus structure, during the appropriate time period. In a receiving application, the Skipstone API actively manages the reception of data from the bus structure, storing the data in the appropriate portion of the appropriate buffer and the processing of the data in the appropriate time period.
During asynchronous data transfers, the Skipstone API actively manages the required transactions to complete the data transfer. During an asynchronous incoming write transaction, the application provides a buffer to the API, mapped to a certain area of the 1394 bus address space. As write transactions arrive at the API, their data is written to the buffer. During an asynchronous incoming read transaction the application is responsible for making sure that the buffer contains useful information. The 1394 bus driver then reads the data from the buffer at the requested address when the read transaction arrives. For both write and read transactions, the Skipstone API actively manages and generates each necessary transaction. For example, if a block of data is being transferred to the application, of a size requiring multiple transactions, the Skipstone API requires the application to describe each 1394 transaction necessary to complete the transfer of the block of data. This consumes significant overhead by the processor of the application as well as the full attention of the API during an asynchronous data transfer operation.
The Skipstone API supports isochronous data transfer operations in a similar way. Specifically, the application must describe each isochronous packet to the Skipstone API. The Skipstone API then transmits each packet at the proper time. This requires significant processor overhead and thereby prohibits efficient processing of the isochronous data by the application.
A block diagram of an exemplary IEEE 1394-1995 serial bus network including a computer system and a video camera is illustrated in FIG. 7. The computer system 200 includes an associated display 202 and is coupled to the video camera 204 by the IEEE 1394-1995 serial bus cable 206. Video data and associated data are sent between the video camera 204 and the computer 200 over the IEEE 1394-1995 serial bus cable 206.
A block diagram of the internal components of the computer system 200 is illustrated in FIG. 8. The computer system 200 includes a central processor unit (CPU) 244, a main memory 230, a video memory 246, a mass storage device 232 and an IEEE 1394-1995 interface circuit 228, all coupled together by a conventional bidirectional system bus 234. The interface circuit 228 includes the physical interface circuit 242 for sending and receiving communications on the IEEE 1394-1995 serial bus. The physical interface circuit 242 is coupled to the camera 204 over the IEEE 1394-1995 serial bus cable 206. The system bus 234 contains an address bus for addressing any portion of the memory 230 and 246. The system bus 234 also includes a data bus for transferring data between and among the CPU 244, the main memory 230, the video memory 246, the mass storage device 232 and the interface circuit 228.
The computer system 200 is also coupled to a number of peripheral input and output devices including the keyboard 238, the mouse 240 and the associated display 202. The keyboard 238 is coupled to the CPU 244 for allowing a user to input data and control commands into the computer system 200. A conventional mouse 240 is coupled to the keyboard 238 for manipulating graphic images on the display 202 as a cursor control device.
A port of the video memory 246 is coupled to a video multiplex and shifter circuit 248, which in turn is coupled to a video amplifier 250. The video amplifier 250 drives the display 202. The video multiplex and shifter circuitry 248 and the video amplifier 250 convert pixel data stored in the video memory 246 to raster signals suitable for use by the display 202.
IEC-61883 is a ratified international standard for the transport of audio/video command requests and responses. This standard uses the concept of plugs and plug control registers to manage and control the attributes of isochronous data flows. It should be noted that plugs do not physically exist on an audio/video device, but a plug is used to establish an analogy with existing audio/video devices where each flow of information is routed through a physical plug.
An isochronous data flow flows from one transmitting device, such as the video camera 204, to one or more receiving devices, such as the computer system 200, by transmitting isochronous packets on an isochronous channel of the IEEE 1394-1995 serial bus. Each isochronous data flow is transmitted to an isochronous channel through one output plug on the transmitting device and is received from that isochronous channel through one input plug on the receiving device.
The transmission of an isochronous data flow through an output plug is controlled by an output plug control register (oPCR) and an output master plug register (oMPR) located on the transmitting device. The output master plug register controls all attributes that are common to all isochronous data flows transmitted by the corresponding transmitting device. The output plug control register controls all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows transmitted by the transmitting device.
The reception of an isochronous data flow through an input plug is controlled by an input plug control register (iPCR) and an input master plug register (iMPR) located on the receiving device. The input master plug register controls all attributes that are common to all isochronous data flows received by the receiving device. The input plug control register controls all attributes of the corresponding isochronous data flow that are independent from attributes of other isochronous data flows received by the receiving device.
An isochronous data flow can be controlled by any device connected to the IEEE 1394-1995 bus by modifying the corresponding plug control registers. Plug control registers can be modified through asynchronous transactions on the IEEE 1394-1995 bus or by internal modifications if the plug control registers are located on the controlling device.
To transport isochronous data between two audio/video devices on the IEEE 1394-1995 bus, it is necessary for an application to connect an output plug on the transmitting device to an input plug on the receiving device using an isochronous channel. The relationship between one input plug, one output plug and one isochronous channel is called a point-to-point connection. A point-to-point connection can only be broken by the application that established it. An application can also just start the transmission or reception of an isochronous data flow on its own device by connecting one of its output or input plugs respectively to an isochronous channel. The relationship between one output plug and one isochronous channel is called a broadcast-out connection. The relationship between one input plug and one isochronous channel is called a broadcast-in connection. Broadcast-out and broadcast-in connections are collectively called broadcast connections. A broadcast connection can be established only by the device on which the plug is located, but it can be broken by any device.
A plug has four possible states. These states are idle, ready, active and suspended. A plug is either on-line or off-line. Only a plug that is on-line is capable of transmitting or receiving an isochronous data flow. A plug will be off-line, for example, if it relies on resources that are temporarily unpowered or otherwise unavailable. A plug to which no connections exist is referred to as unconnected. A plug to which one or more connections exist is referred to as connected. A plug which is connected and on-line is in the active state. Only an active plug shall transmit or receive an isochronous data flow except in the case of a bus reset where the isochronous data flow is resumed immediately after the bus-reset.
A diagram of the software layers implemented within an IEEE 1394-1995 capable computer system 200 is illustrated in FIG. 9. The application layer 280 includes at least one application 286. The driver layer 282 includes the 1394 Protocol driver 288, the 1394 Bus Class driver 290 and the 1394 Port driver 292. The 1394 Protocol driver 288 performs commands that allow the application to communicate with other devices or applications across the IEEE 1394-1995 serial bus, such as the video camera 204. The 1394 Bus Class driver 290 is responsible for communications sent and received over the IEEE 1394-1995 serial bus. The 1394 Port driver 292 is a hardware interface driver. The hardware layer 284 includes the 1394 PCI Interface module 294 which provides the interface between the IEEE 1394-1995 serial bus and the system bus 234 within the computer system 200. The 1394 PCI Interface module 294 is coupled to the physical interface 296 of the video camera 204 by the IEEE 1394-1995 serial bus.
Such a stack of software layers as illustrated in FIG. 9 is currently provided by Microsoft within the Windows(trademark) 98 operating system. The application programming interface (API) provided within this current implementation included within the Windows(trademark) operating system provides no feedback to an application relating to activities that occur on a plug. For example, if another device on the IEEE 1394-1995 serial bus changes the plug""s connection or the isochronous data flow for a plug, these state changes are not reported by this API to the upper layer software which is using the plug, causing the upper layer software to fall into an unknown working state. This API also does not allow upper layer software clients to explicitly establish connections between other devices on the IEEE 1394-1995 serial bus. This API will also not allow a client application to create the actual connection and manage the type of connection between the PC and the external device.
What is needed is an API that provides automated generation of transactions necessary to complete a data transfer, without requiring supervision by the API and the processor of an application. What is further needed is an API which implements isochronous transfer features of the IEEE 1394 standard bus structure very efficiently, permitting a high degree of hardware automation, if needed by the application.
In a first embodiment, an applications programming interface implements and manages isochronous and asynchronous data transfer operations between an application and a bus structure. During an asynchronous transfer the API includes the ability to transfer any amount of data between one or more local data buffers within the application and a range of addresses over the bus structure using one or more asynchronous transactions. An automatic transaction generator may be used to automatically generate the transactions necessary to complete the data transfer without direct processor control or supervision by the applications programming interface. The API also includes the ability to transfer data between the application and another node on the bus structure isochronously over a dedicated channel. During an isochronous data transfer, a buffer management scheme is used to manage a linked list of data buffer descriptors provided by the application. The linked list of buffer descriptors is maintained by the API to ensure the uninterrupted flow of the continuous stream of isochronous data. This linked descriptor list can form a circular list of buffers and include a forward pointer to the next buffer in the list and a backward pointer to the previous buffer in the list for each buffer. The linked descriptor list may also form a linear list to which the application can append additional buffers or remove existing buffers from the list. During isochronous transfers of data, the API provides implementation of a resynchronization event in the stream of data allowing for resynchronization by the application to a specific point within the data. Implementation is also provided for a callback routine for each buffer in the list which calls the application at a predetermined point during the transfer of data.
In a preferred embodiment, an isochronous applications programming interface (API) implements and manages isochronous data transfer and receive operations between an application and a bus structure. The isochronous API presents a virtual representation of a plug, using a plug handle, in which multiple client applications can register to a given plug. Broadcast transmission operations are managed through an output plug to transmit data on a specified isochronous channel. Broadcast reception operations are managed through an input plug to receive data on a specified isochronous channel. Point-to-point transmission operations are managed through an output plug to transmit data to a specified input plug on a receiving device. Point-to-point reception operations are managed through an input plug to receive data from a specified output plug on a transmitting device. When receiving a request from a client application for an isochronous data transmission or reception, the isochronous API connects an appropriate plug, allocates the appropriate resources and manages the resources during the data transmission or reception. During a data transmission, the isochronous API attaches appropriate filled buffers to the output plug and when the data within the buffer is transmitted, detaches the buffer from the output plug. During a data reception, the isochronous API attaches appropriate buffers to be filled to the input plug and when the buffer is filled with received data, detaches the buffer from the input plug. The isochronous API also notifies a client application of any state changes on a connected plug through an event handle.
In one aspect of the present invention, an interface between an application and a bus structure for controlling isochronous data operations to and from the application over the bus structure includes means for allocating resources necessary for the isochronous data operation and means for controlling isochronous data flow between the application and the bus structure including managing buffers for the application utilized in the data operation. The resources include an isochronous channel and isochronous bandwidth. The isochronous data flow is from the application to the bus structure for transmission operations and from the bus structure to the application for reception operations. The bus structure preferably substantially complies with a version of the IEEE 1394 standard. The resources include a plug and the means for allocating resources connects the plug to the application. The means for controlling communicates with the application regarding changes in state of the plug. The interface provides a representation of the plug to the application. The isochronous data flow is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. During a transmission operation, the means for controlling attaches filled buffers to the output plug and detaches buffers from the output plug after data within the buffers has been transmitted on the bus structure. During a reception operation, the means for controlling attaches buffers to be filled to the input plug and detaches filled buffers from the input plug. The means for controlling triggers an event to inform the application regarding changes in state of the plug. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The interface further includes means for monitoring for an exception condition including notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The means for controlling further handles a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. The means for controlling handles the data type by adding header and appropriate extension information.
In another aspect of the present invention, a node configured to couple to a bus structure includes one or more applications, a transaction layer to control transactions between the applications and remote nodes coupled to the bus structure and an isochronous interface layer coupled to communicate with the one or more applications and the transaction layer to provide an interface to the one or more applications to control isochronous data operations to and from the one or more applications over the bus structure, wherein the isochronous interface layer allocates resources necessary for the data operations and controls the isochronous data flow between the one or more applications and the bus structure including managing buffers for the application utilized in the data operation. The resources include a plug and the isochronous interface layer connects the plug to the application. The isochronous interface layer provides a representation of the plug to the application. The isochronous interface layer communicates with the application regarding changes in state of the plug. The isochronous interface layer triggers an event to inform the application regarding changes in state of the plug. The resources include an isochronous channel and isochronous bandwidth. The isochronous data flow is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. During a transmission operation, the isochronous interface layer provides capability to attach filled buffers to the output plug and detach buffers from the output plug after data within the buffers has been transmitted on the bus structure. During a reception operation, the isochronous interface layer attaches buffers to be filled to the input plug and detaches filled buffers from the input plug. The bus structure preferably substantially complies with a version of the IEEE 1394 standard. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The isochronous interface further monitors for an exception condition including notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The isochronous interface layer further handles a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. The isochronous interface layer handles the data type by adding header and appropriate extension information.
In yet another aspect of the present invention, a method of providing an interface to an application and managing isochronous data transfer operations between the application and a bus structure includes receiving a request for a data transfer operation from the application, allocating necessary resources for the data transfer operation and managing the necessary resources for the data transfer operation, including managing buffers for the application utilized in the data operation. The method further includes connecting an appropriate plug for the data transfer operation. The resources include an isochronous channel and isochronous bandwidth. The resources include a plug. The method further includes providing a representation of the plug to the application. The method further includes communicating with the application regarding state changes of the plug. The method further includes triggering an event to inform the application regarding state changes of the plug. Data flow for the data transfer operation is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. The method further includes attaching filled buffers to the output plug and detaching buffers from the output plug after data within the buffers has been transmitted on the bus structure, during transmission operations. The method further includes attaching buffers to be filled to the input plug and detaching filled buffers from the input plug, during reception operations. The bus structure preferably substantially complies with a version of the IEEE 1394 standard. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The method further includes monitoring for an exception condition including notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The method further includes handling a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. Handling the data type through the plug includes adding header and appropriate extension information.
In still yet another aspect of the present invention, a method of providing an interface to an application resident within a node on a bus structure includes receiving a request for a data transfer operation from the application, connecting an appropriate plug for the data transfer operation, allocating necessary resources for the data transfer operation, managing the necessary resources for the data transfer operation, including managing buffers for the application utilized in the data operation and informing the application of any state changes within the plug. Informing the application of any state changes within the plug includes triggering an event to inform the application of the state changes within the plug. The resources include an isochronous channel and isochronous bandwidth. Data flow for the data transfer operation is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. The method further includes attaching filled buffers to the output plug and detaching buffers from the output plug after data within the buffers has been transmitted on the bus structure, during transmission operations. The method further includes attaching buffers to be filled to the input plug and detaching filled buffers from the input plug, during reception operations. The bus structure preferably substantially complies with a version of the IEEE 1394 standard. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The method further includes monitoring for an exception condition and notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The method further includes handling a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. Handling the data type through the plug includes adding header and appropriate extension information.
In yet another aspect of the present invention, a bus structure includes one or more remote nodes each including at least one remote application and a local node including one or more local applications, a transaction layer to control transactions between the local applications and remote nodes coupled to the bus structure and an isochronous interface layer coupled to communicate with the one or more local applications and the transaction layer to provide an interface to the one or more local applications to control isochronous data operations to and from the one or more local applications over the bus structure, wherein the isochronous interface layer allocates resources necessary for the data operations, including connecting an appropriate plug to the application, and controls the isochronous data flow between the one or more local applications and the bus structure including managing buffers for the application utilized in the data operation by; attaching buffers to and detaching buffers from the plug. The resources include an isochronous channel and isochronous bandwidth. The isochronous data flow is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. During a transmission operation, the isochronous interface layer attaches filled buffers to the output plug and detaches buffers from the output plug after data within the buffers has been transmitted on the bus structure. During a reception operation, the isochronous interface layer attaches buffers to be filled to the input plug and detaches filled buffers from the input plug. The isochronous interface layer also communicates with the one or more local applications regarding state changes in the plug. The isochronous interface layer also triggers an event to inform the one or more local applications regarding state changes in the plug. The bus structure preferably substantially complies with a version of the IEEE 1394 standard. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The isochronous interface further monitors for an exception condition including notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The isochronous interface layer further handles a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data, and audio data. The isochronous interface layer handles the data type by adding header and appropriate extension information.
In another aspect of the present invention, a node coupled to a bus structure which substantially complies with a version of the IEEE 1394 standard includes one or more local applications, a transaction layer to control transactions between the applications and remote nodes coupled to the bus structure and an isochronous interface layer coupled to communicate with the one or more applications and the transaction layer to provide an interface to the one or more applications to control isochronous data operations to and from the one or more applications over the bus structure, wherein the isochronous interface layer allocates resources necessary for the data operations, including connecting an appropriate plug to the application and allocating necessary channel and bandwidth, and controls the isochronous data flow between the one or more applications and the bus structure including managing buffers for the application utilized in the data operation, by attaching buffers to and detaching buffers from the plug. The isochronous data flow is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. During a transmission operation, the isochronous interface layer attaches filled buffers to the output plug and detaches buffers from the output plug after data within the buffers has been transmitted on the bus structure. During a reception operation, the isochronous interface layer attaches buffers to be filled to the input plug and detaches filled buffers from the input plug. The isochronous interface layer also communicates with the one or more applications regarding state changes in the plug. The isochronous interface layer also triggers an event to inform the one or more applications regarding state changes in the plug. Each of the buffers preferably include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers preferably include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The isochronous interface further monitors for an exception condition including notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The isochronous interface layer further handles a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. The isochronous interface layer handles the data type by adding header and appropriate extension information.
In yet another aspect of the present invention, an interface between an application and a bus structure to control isochronous data operations to and from the application over the bus structure includes a control system configured to allocate resources necessary for the isochronous data operation and a buffer system configured to control isochronous data flow between the application and the bus structure including managing buffers for the application utilized in the data operation. The resources include an isochronous channel and isochronous bandwidth. The isochronous data flow is from the application to the bus structure for transmission operations and from the bus structure to the application for reception operations. The bus structure substantially complies with a version of the IEEE 1394 standard. The resources include a plug and the control system connects the plug to the application. The buffer system communicates with the application regarding changes in state of the plug. The interface provides a representation of the plug to the application. The isochronous data flow is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for reception operations. During a transmission operation, the buffer system attaches filled buffers to the output plug and detaches buffers from the output plug after data within the buffers has been transmitted on the bus structure. During a reception operation, the buffer system attaches buffers to be filled to the input plug and detaches filled buffers from the input plug. The buffer system triggers an event to inform the application regarding changes in state of the plug. Each of the buffers include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The interface further includes a monitoring circuit configured to determine when an exception condition occurs and notify the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The buffer system further handles a data type through the plug. The data type is a selective one of raw data, DV data, MPEG data and audio data. The buffer system handles the data type by adding header and appropriate extension information.
In still yet another aspect of the present invention, a method of providing an interface to an application, managing isochronous data transfer operations between the application and a bus structure and monitoring for an exception includes receiving a request for a data transfer operation from the application, allocating necessary resources for the data transfer operation, managing the necessary resources for the data transfer operation, including managing buffers for the application utilized in the data operation, determining if an exception condition occurs and notifying the application when the exception condition occurs. The exception condition includes a condition within a group consisting of data out of sequence, receiving dummy packets, change of data stream format and data becoming out of synchronization. The method further includes connecting an, appropriate plug for the data transfer operation. The resources include an isochronous channel and isochronous bandwidth. The resources include a plug. The method further includes providing a representation of the plug to the application. The method further includes communicating with the application regarding state changes of the plug. Data flow for the data transfer operation is from the application to the bus structure through an output plug for transmission operations and from the bus structure to the application through an input plug for, reception operations. The method further includes attaching filled buffers to the output plug and detaching buffers from the output plug after data within the buffers has been transmitted on the bus structure, during transmission operations. The method further includes attaching buffers to be filled to the input plug and detaching filled buffers from the input plug, during reception operations. The bus structure substantially complies with a version of the IEEE 1394 standard. Each of the buffers include a callback routine which is activated to call the application at a point during a data transfer operation. Each of the buffers include a resynchronization event which is activated to resynchronize the application to a point during a data transfer operation. The method further includes triggering an event to inform the application regarding changes of the plug.